/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.siseventos.managed;

import br.siseventos.model.TdItemAvaliacao;
import br.siseventos.service.ItemAvaliacaoService;
import br.siseventos.view.util.CallbackHelper;
import br.siseventos.view.util.MessageHelper;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

/**
 *
 * @author Ivan
 */
@ManagedBean(name = "itemAvaliacaoBean")
@ViewScoped
public class ItemAvaliacaoBean extends BaseBean{

    // Campos
    private String nome;
    private String descricao;
    private TdItemAvaliacao itemAvaliacaoSelecionado;
    private ItemAvaliacaoService itemAvaliacaoService;
    private List<TdItemAvaliacao> itensAvaliacao;

    // Construtor
    public ItemAvaliacaoBean() {
        // Inicializar o objeto DAO
        itemAvaliacaoService = new ItemAvaliacaoService();

        // Inicializar a lista de itens de avaliação
        try {
            itensAvaliacao = itemAvaliacaoService.consultarTodos();
        } catch (Exception e) {
        }

    }

    // Getters e Setters
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /**
     * @return the itemAvaliacaoSelecionado
     */
    public TdItemAvaliacao getItemAvaliacaoSelecionado() {
        return itemAvaliacaoSelecionado;
    }

    /**
     * @param itemAvaliacaoAvaliacaoSelecionado the itemAvaliacaoSelecionado to
     * set
     */
    public void setItemAvaliacaoSelecionado(TdItemAvaliacao itemAvaliacaoSelecionado) {
        this.itemAvaliacaoSelecionado = itemAvaliacaoSelecionado;
    }

    /**
     * @return the ItensAvaliacao
     */
    public List<TdItemAvaliacao> getItensAvaliacao() {
        return itensAvaliacao;
    }

    /**
     * @param ItensAvaliacao the ItensAvaliacao to set
     */
    public void setItensAvaliacao(List<TdItemAvaliacao> ItensAvaliacao) {
        this.itensAvaliacao = ItensAvaliacao;
    }

    // Actions e Listeners
    public void cadastrarItemAvaliacao(ActionEvent e) {
        // Criando o objeto a ser persistido no banco
        TdItemAvaliacao itemAvaliacao = new TdItemAvaliacao(nome, descricao);
        try {
            // Incluindo o objeto no banco
            itemAvaliacaoService.incluir(itemAvaliacao);

            // Repopular o DataTable
            popularDataTable();

            // Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Item cadastrado com sucesso!",
                    FacesMessage.SEVERITY_INFO);

            // Adicionando a parâmetro de Callback
            CallbackHelper.addCallback("itemAvaliacaoSalvo", true);



        } catch (Exception ex) {
            // Mostrar mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao cadastrar item!",
                    FacesMessage.SEVERITY_ERROR);
        }

    }

    public void excluirItemAvaliacao(ActionEvent e) {
        try {
            // Excluindo o Item de Avaliação
            itemAvaliacaoService.excluir(itemAvaliacaoSelecionado.getIdtItemAvaliacao());

            // Repopular o DataTable
            popularDataTable();

            // Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Item excluído com sucesso!",
                    FacesMessage.SEVERITY_INFO);

        } catch (Exception ex) {
            // Mostrar mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao excluir item!",
                    FacesMessage.SEVERITY_ERROR);
        }
    }

    public void alterarItemAvaliacao(ActionEvent e) {
        try {
            // Alterando o Item de Avaliação
            itemAvaliacaoService.alterar(itemAvaliacaoSelecionado);

            // Repopular o DataTable
            popularDataTable();

            // Mostrar mensagem de sucesso
            MessageHelper.showGlobalMessage("Item alterado com sucesso!",
                    FacesMessage.SEVERITY_INFO);

            // Adicionando a parâmetro de Callback
            CallbackHelper.addCallback("itemAvaliacaoAlterado", true);

        } catch (Exception ex) {
            // Mostrar mensagem de erro
            MessageHelper.showGlobalMessage("Erro ao alterar item!",
                    FacesMessage.SEVERITY_ERROR);
        }
    }

    //Util
    public void popularDataTable() {
        try {
            itensAvaliacao = itemAvaliacaoService.consultarTodos();
        } catch (Exception e) {
        }

    }
}
